package com.eksframework.commons.core.tuple;

import lombok.*;

/**
 * TupleOne
 *
 * @author: chenfenghai
 * @version: 1.0
 * @date: 2020-12-23 9:43
 */
@Data
@EqualsAndHashCode
@ToString
public class TupleOne<A> {

    /**
     * 元组1
     */
    private A first;

    /**
     * 私有构造
     */
    private TupleOne() {
    }

    /**
     * 私有构造
     *
     * @param first 元组1
     */
    private TupleOne(A first) {
        this.first = first;
    }

    /**
     * 实例化对象
     *
     * @param <A> 元组1类型
     * @return 元组实例
     */
    public static <A> TupleOne<A> of() {
        return new TupleOne<>();
    }

    /**
     * 实例化对象
     *
     * @param first 元组1
     * @param <A>   元组1类型
     * @return 元组实例
     */
    public static <A> TupleOne<A> of(A first) {
        return new TupleOne<>(first);
    }
}
